import vueParser from 'vue-eslint-parser';
import parserTs from '@typescript-eslint/parser';
import eslintVue from 'eslint-plugin-vue';
import tseslint from '@typescript-eslint/eslint-plugin';
import vuePlugin from 'eslint-plugin-vue';
import prettierPlugin from 'eslint-plugin-prettier';
import prettier from 'eslint-config-prettier';

export default [
	...eslintVue.configs['flat/recommended'],
	prettier,
	{
		files: ['**/*.{js,ts,tsx,vue}'],
		plugins: {
			'@typescript-eslint': tseslint,
			vue: vuePlugin,
			prettier: prettierPlugin,
		},
		languageOptions: {
			parser: vueParser,
			parserOptions: {
				extraFileExtensions: ['.vue'],
				ecmaFeatures: {
					jsx: true,
					tsx: true,
				},
				// ecmaVersion: 2020,
				useJSXTextNode: true,
				sourceType: 'module',
				parser: parserTs,
			},
		},
		ignores: ['node_modules', 'dist', 'tsconfig.*'],
		rules: {
			// Vue 规则 https://eslint.vuejs.org/rules
			'vue/multi-word-component-names': 'off', // 组件名称规则
			// 'vue/html-self-closing': 'error',
			// 'vue/component-tags-order': ['error', { order: ['script', 'template', 'style'] }],
			// 'vue/no-v-html': 'off',

			// TypeScript 规则 https://typescript-eslint.io/rules
			'no-unused-vars': 'off',
			'@typescript-eslint/no-unused-vars': 'off',
			// '@typescript-eslint/no-explicit-any': 'warn',
			// '@typescript-eslint/ban-ts-comment': 'warn',
			// 通用规则
			// 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'warn',
			'prettier/prettier': 'error',
		},
	},
];
